package org.afs.gescol.edt.api.dao.interfaces;

import java.util.List;

import org.afs.gescol.edt.api.dto.TimeSlotCriteria;
import org.afs.gescol.edt.api.model.TimeSlot;

/**
 * DAO for time slot management.
 * @author Kobla GBENYO (kobla.gbenyo@gmail.com)
 */
public interface TimeSlotDao {

    /**
     * Get time slot by its ID.
     * @param id the id
     * @return the getted time slot
     */
    TimeSlot getTimeSlotById(Long id);

    /**
     * Get time slot list by criteria.
     * @param searchCriteria the search criteria
     * @return the time slot list
     */
    List<TimeSlot> getTimeSlotByCriteria(TimeSlotCriteria searchCriteria);

    /**
     * Create a time slot.
     * @param timeSlot the time slot to create
     */
    void createTimeSlot(TimeSlot timeSlot);

    /**
     * Delete a time slot.
     * @param timeSlot the time slot to delete
     */
    void deleteTimeSlot(TimeSlot timeSlot);

    /**
     * Delete all time slot in DB.
     */
    void cleanTimeSlot();
}
